package edu.compila.client.compila;

import java.util.HashMap;
import java.util.Map;


public class TabelaSimbolos {

	public TabelaSimbolos() {
		iniciarTabela();
	}
	private Map<String, Padrao> simbolos = new HashMap<String, Padrao>();
	
	public Token add(String lexema,Padrao padrao) {
		simbolos.put(lexema, padrao);
		return new Token(padrao,lexema);
	}
	
	public Padrao contem(String lexema) {
		if(simbolos.containsKey(lexema)) {
			return simbolos.get(lexema);
		} else {
			return null;
		}
	}
	
	private void iniciarTabela() {
		add("&lt", Padrao.OP_REL);
		add("&gt", Padrao.OP_REL);
		add("&ge", Padrao.OP_REL);
		add("&le", Padrao.OP_REL);
		add("&eq", Padrao.OP_REL);
		add("&dif", Padrao.OP_REL);
		add("!=", Padrao.OP_REL);
		
		add("+", Padrao.OP_ADD_SUB);
		add("-", Padrao.OP_ADD_SUB);
		add("*", Padrao.OP_MULT_DIV);
		add("/", Padrao.OP_MULT_DIV);
		
		add(":=", Padrao.OP_ATRIB);
		
		add(";", Padrao.FIM_CMD);
		
		add("(", Padrao.PARAN_ESQ);
		add(")", Padrao.PARAN_DIR);
		
		add("true", Padrao.LOGICO);
		add("false", Padrao.LOGICO);
		
		add("not", Padrao.OP_LOGICO);
		add("and", Padrao.OP_LOGICO);
		add("or", Padrao.OP_LOGICO);
		
		add("bool", Padrao.TIPO);
		add("string", Padrao.TIPO);
		add("num", Padrao.TIPO);
		
		add("program", Padrao.PROGRAM);
		add("endprogram", Padrao.END_PROGRAM);
		
		add("begin", Padrao.BEGIN);
		add("end", Padrao.END);
		
		add("if", Padrao.IF);
		add("them", Padrao.THEN);
		add("else", Padrao.ELSE);
		
		add("for", Padrao.FOR);
		add("while", Padrao.WHILE);
		
		add("declare", Padrao.DECLARE);
		
		add("to", Padrao.TO);
	}

}
